/*
||
|| @ Archivo MuxShield.h
|| @ Libreria para trabajar con Mux Shield de mayhewlabs y Arduino.
|| @ Desarrollado por Pablo Nahuel Ontivero Castro
|| @ Version 0.1
|| @ contacto pablo@lanzate.com
||
|| @ Para mas informacion sobre Mux Shield, visite:
|| @ http://mayhewlabs.com/products/arduino-mux-shield
||
|| @ Descripcion
|| | Con esta libreria basta con definir de una manera mas comodo
|| | como trabajar con la I/O en la que colocamos nuestra señal.
|| #
||
|| @ Licencia
|| | Esta libreria es software libre, puedes distribuirlar y/o
|| | modificarla bajo los terminos de la Licencia Pública General 
|| | Reducida de GNU publicada por la Free Software Foundation,
|| | version 3 de la licencia.
|| |
|| | Esta libreria es distribuida con la esperanza de que sea util
|| | para todo aquel que la necesite pero SIN NINGUNA GARANTIA, para
|| | mas informacion lea la Licencia Pública General Reducida de GNU
|| | incluida en la carpeta de la libreria con el nombre LGPL3.txt
|| |
|| | Debe recebir una cipia de la Licencia Publica General Reducida de GNU
|| | con esta libreria, en caso de no recibirla, escriba a Free Software
|| | Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
|| #
||
*/

#ifndef MUXSHIELD_H
#define MUXSHIELD_H

// Version de Arduino.
#if defined(ARDUINO) && ARDUINO >= 100
#include "Arduino.h"	// para digitalRead, digitalWrite, etc
#else
#include "WProgram.h"
#endif

// Definicion para los cambios de estado, y declaracion de entradas y salidas

#define OFF LOW
#define ON HIGH

// Definicion para las lineas de control y lineas de MUX

#define CONTROL0 5
#define CONTROL1 4
#define CONTROL2 3
#define CONTROL3 2

#define MUX0 14
#define MUX1 15
#define MUX2 16

// Clase Principal

class Mux {
public:
	Mux();
	void control();
	void io(String FunSignal, int LineSignal, int ActivePin, int Activate);
	byte lecturadigital(int LineSignal);
	int lecturaanalogica(int LineSignal, int ActivePin);
private:
	String convertir(int ActivePin);
	void Activar(String ActivePin);
	void Selector(int LineSignal, String FunSignal);
	void Encender(int LineSignal);
	void Apagar(int LineSignal);
};

#endif